package com.ruoyi.controller;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.entity.ChartQueryDTO;
import com.ruoyi.entity.QuickChart;
import com.ruoyi.service.QuickChartService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * QuickChart控制器类，用于处理图表生成的请求
 */
@RestController
@RequestMapping("/chart")
public class QuickChartController {

    /**
     * 快速图表服务接口的实例，用于调用图表生成服务
     */
    @Autowired
    private QuickChartService quickChartService;

    /**
     * 智能生成图表的端点
     * 接收用户自然语言描述的查询对象，尝试生成相应的图表配置并渲染
     * 如果生成过程中出现异常，则返回失败的响应
     *
     * @param query 用户自然语言描述的查询对象，包含生成图表所需的信息
     * @return 返回一个包含图表配置的响应对象，或者在失败时返回错误信息
     */
    @PostMapping("/smartGenerate")
    public R<QuickChart> smartGenerate(@RequestBody ChartQueryDTO query) {
        try {
            // 调用服务层方法生成智能图表配置
            QuickChart config = quickChartService.generateSmartChart(query);
            // 返回成功的响应，包含图表配置
            return R.ok(config);
        } catch (Exception e) {
            // 返回失败的响应，包含错误信息
            return R.fail("图表生成失败：" + e.getMessage());
        }
    }
}
